package gui;

import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.io.IOException;
import java.net.URL;
import gui.DescribedCustomizedButton;
import javax.swing.JEditorPane;

/** Un TextPanel non è altro che una JTextArea adibita all'output
 *  di testo, senza sottostare alle limitazioni spaziali di JLabel.
 * @author Daniele
 * @version 1.3 */
public class TextPanel extends JEditorPane implements MouseListener {

	private static final long serialVersionUID = -7781629460581204520L;
	
	/** La stringa di testo che contiene il testo standard nel pannello. */
	private URL defaultText;
	
	/** Costruisce un TextPanel vuoto. */
	public TextPanel(){
		super();
		this.setEditable(false);
	}
	
	/** Carica nel TextPanel il contenuto di un URL.
	 * @param url l'URL contenente il testo del TextPanel. */
	public void loadContent(URL url){
		if (url != null){
			try {
				this.setPage(url);
				this.defaultText = url;
			} catch (IOException error){
				System.err.println("Bad URL: " + url.toString());
			}
		} else {
			System.err.println("Couldn't reach URL.");
		}
	}
	
	/** Cambia la scritta nel TextPanel in base al contenuto
	 *  dell'URL specificato.
	 * @param _url l'URL che contiene la nuova scritta.*/
	public void setText(URL _url){
		try {
			this.setPage(_url);
		} catch (IOException error) {}
		this.setCaretPosition(0);
	}

	@Override
	public void mouseClicked(MouseEvent e) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void mouseEntered(MouseEvent e) {
		try {
			this.setText(((DescribedCustomizedButton) e.getSource()).getDescription());
		} catch (ClassCastException error) {}
	}

	@Override
	public void mouseExited(MouseEvent e) {
		this.setText(this.defaultText);
	}

	@Override
	public void mousePressed(MouseEvent e) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void mouseReleased(MouseEvent e) {
		// TODO Auto-generated method stub
		
	}
}
